SQL与过程化程序设计语言

您所在的位置:网站首页 SQL是指标准化查询语言 请选择你的答案 是 否 SQL与过程化程序设计语言

SQL与过程化程序设计语言

2024-07-15 18:20| 来源: 网络整理| 查看: 265

SQL是一种典型的非过程化程序设计语言,这种语言的特点是:只指定哪些数据被操纵,至于对这些数据要执行哪些操作,以及这些操作是如何执行的,则未被指定。非过程化程序设计语言的优点在于它的简单易学,因此已经成为关系数据库访问和操纵数据的标准语言。    与之相对应的是过程化程序设计语言,我们平常熟悉的各种高级程序设计语言都属于这一范畴。这种语言的特点是:一条语句的执行是与其前后的语句和控制结构(如条件语句、循环语句等)相关的。与SQL相比,这些语言显得比较复杂,但优点是使用灵活,数据操纵能力非常强大。    为了弥补SQL在过程化控制方面的不足,许多商用数据库系统,都对标准SQL语言进行了扩充,增加了过程化控制部分,即所谓的 PL/SQL。当然不同的数据库系统所做的扩充程度是很不同的。    这里仅以SQL99/PSM为例(SQL99为对象关系型数据库的最新语言标准),说明一个完整的PL/SQL应该具有哪些语言成分:    BEGIN...END语句 —— 复合语句    DECLARE语句 —— 变量声明语句(当然也包括游标、临时表、异常条件等的声明)    CALL语句 —— 函数调用语句    RETURN语句 —— 函数返回语句    SET语句 —— 赋值语句    IF语句 —— 条件语句    CASE语句 —— 条件分支语句    LOOP语句 —— 循环语句1(相当于C中的WHILE(1))    REPEAT语句 —— 循环语句2(相当于C中的DO...WHILE语句)    WHILE语句 —— 循环语句3    ITERATE语句 —— 跳转语句1(相当于C中的CONTINUE语句)    LEAVE语句 —— 跳转语句2(相当于C中的BREAK语句)    FOR语句 —— 迭代语句(相当于BAT中的FOR),即对由一游标表示的数据集中的每一元素执行一组给定的操作。    SIGNAL、RESIGNAL语句 —— 异常处理语句    PL/SQL主要用于书写存储过程和触发器的动作体,由于是解释执行,性能并不高,但也使得系统的强壮性比较有保障。当然,无论是使用的灵活程度,还是表达式的复杂程度,这种语言同高级程序设计语言(如C语言)相比还是相去甚远的。    因此,象ORACLE、DB2这样的数据库系统,对于一些性能要求较高的任务,都允许在PL/SQL中直接使用以高级程序设计语言编写的外部过程(通常是由嵌入式SQL实现的,好象只有DB2允许直接用高级程序设计语言书写),当然如何编写这些外部过程,是有很多限制的(例如DB2要求用户在使用前先设置所谓的“围栏”),这取决于各种数据库系统的具体实现。    用高级程序设计语言,以编译执行方式来访问数据库,最大的问题是如何保证数据库不会因应用的错误而崩溃。如何做到这一点,并没有看上去那么简单,关于这方面的技术,已经超出了本文的讨论范围。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3